﻿using System;
using System.Collections.Generic;

namespace Entities
{
    public class Negocio
    {
        public long IDNegocio { get; set; }
        public string NombreNegocio { get; set; }
        public string RazonSocial { get; set; }
        public string Descripcion { get; set; }
        public string CUIT { get; set; }
        public string Email { get; set; }
        public string Telefono { get; set; }
        public DateTime FechaAlta { get; set; }
        public DateTime FechaBaja { get; set; }
        public Direccion Direccion { get; set; }
        public Provincia Provincia { get; set; }
        public Pais Pais { get; set; }
        public NegocioEstado NegocioEstado { get; set; }
        public byte[] Logo { get; set; }
        //instancia del objeto negocio, sobrecargada con dos parámetros, el primero es el Id, para 
        //que traiga todos los datos del negocio, el segundo en un boleano, que dice si bedeb cargar también los empleados del negocio.

        public Negocio()
        {
        }

        public Negocio(bool NegocioNuevo)
        {
            NegocioEstado = new NegocioEstado();
            Provincia = new Provincia();
            Pais = new Pais();
            Direccion = new Direccion();
        }

        public static long Nuevo(Negocio parNegocio)
        {
            try
            {
                return DAL.NegocioDAL.Nuevo(parNegocio);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static void Modificar(Negocio parNegocio)
        {
            try
            {
                DAL.NegocioDAL.Modificar(parNegocio);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }


        public static void ModificarLogo(long parIDNegocio, byte[] parBytes)
        {
            try
            {
                DAL.NegocioDAL.ModificarLogo(parIDNegocio, parBytes);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static void Eliminar(long parIdNegocio)
        {
            try
            {
                DAL.NegocioDAL.Eliminar(parIdNegocio);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }
        public static Negocio BuscarUno(long parIDNegocio, bool parTraerEmpleados)
        {
            try
            {
                return DAL.NegocioDAL.BuscarUno(parIDNegocio, parTraerEmpleados);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static Negocio BuscarUnoPosUsuario (string parEmail)
        {
            try
            {
                return DAL.NegocioDAL.BuscarUnoPorUsuario(parEmail);
            }
            catch (Exception ex)
            {
                //TODO falta agregar el LOG si da un error
                throw ex;
            }
        }

        public static List<Negocio> BuscarNegocios(long? parIDNegocio, string parNombreComercial, string parLocalidad, string parProvincia, bool? parTraerNegociosNegocio)
        {
            List<Negocio> ListaNegocios = new List<Negocio>();
            //Falta la parte que devulve los negocios.
            return ListaNegocios;
        }

        public static List<Negocio> BuscarTodos ()
        {
            return DAL.NegocioDAL.BuscarTodos();
        }
    }
}
